package meiRiYiTi;

import java.util.Arrays;

/**
 * Author: 笨蛋超人不会飞
 * Date:  9:49
 */
public class day_2589 {
    public int findMinimumTime(int[][] tasks) {
        int len=tasks.length;
        int res=0;
//        将原来的数组按照结束时间进行排序
        Arrays.sort(tasks,(a, b) -> a[1] - b[1]);
//        开辟一个标记数组表示是否已经用过
        int run[]=new int[tasks[len-1][1]+1];
//        注意run一开始都是0
        for (int i = 0; i < len; i++) {
            int start=tasks[i][0];
            int end=tasks[i][1];
            int distan=tasks[i][2];
            for (int j = start; j <=end ; j++) {
                distan-=run[i];
                if(distan==0){
                    break;
                }
            }
            res+=distan>0?distan:0;
//            从尾到头进行添加
            for (int j = end; j >=0&&distan>0 ; j--) {
//                注意是对还没用过的点进行添加
                if(run[j]==0){
                    run[j]=1;
                    distan--;
                }
            }
        }
        return res;
    }
}
